Avoiding stall conditions and sequence number ambiguity in an automatic repeat request protocol

ABSTRACT

The present invention provides a stall avoidance mechanism that may be used alone or in conjunction with an ambiguity avoidance mechanism in an ARQ protocol. Both mechanisms decrease data delays and increase data throughput rates. Stall avoidance is accomplished by determining whether a stall condition exists with respect to receiving a missing data unit. In one example, only a single timer is needed to avoid stalls. Retransmission ambiguities may be avoided using a retransmission window in the transmitter and/or a receive window in the receiver. Although each mechanism may be used independently of the other, a preferred example embodiment uses a stall avoidance timer, a retransmission window in the transmitter, and a receive window in the receiver.

PRIORITY APPLICATION

This application claims priority from provisional Swedish patentapplication number, SE 0103506-2, filed on Oct. 19, 2001, the disclosureof which is incorporated herein by reference.

FIELD OF THE INVENTION

The present invention relates to data communications, and in particularto Automatic Repeat reQuest (ARQ) protocols used in data communications.

BACKGROUND AND SUMMARY OF THE INVENTION

In digital data communications systems, it is common for data packetstransmitted over a communications channel to be corrupted by errors,e.g., when communicating in hostile environments. Wireless radiocommunications are often conducted in an especially hostile environment.The radio channel is subjected to a barrage of corrupting factorsincluding noise, rapidly changing communications channelcharacteristics, multi-path fading, and time dispersion which may causeintersymbol interference, and interference from adjacent channelcommunications.

There are numerous techniques that may be employed by a receiver todetect such errors. One example of an error detection technique is thewell-known cyclic redundancy check (CRC). Other techniques used inpacket data communications employ more advanced types of block codes orconvolutional codes to accomplish both error detection and errorcorrection. For both error detection and error correction, channelcoding is applied which adds redundancy to the data. When theinformation is received over the communications channel, the receiveddata is decoded using the redundancy to detect if the data has beencorrupted by errors. The more redundancy built into a unit of data, themore likely errors can be accurately detected, and in some instances,corrected using a forward error correcting (FEC) scheme. In a pure FECscheme, the flow of information is uni-directional, and the receiverdoes not send information back to the transmitter if a packet decodingerror occurs.

In many communications systems, including wireless communications, it isdesirable (if possible) to have a reliable data delivery service. Mostreliable data delivery protocols use a fundamental retransmissiontechnique where the receiver of the data responds to the sender of thedata with acknowledgments (ACKs) and/or negative acknowledgments(NACKs). This technique is commonly known as Automatic Repeat reQuest(ARC) transaction processing. Coded data packets are transmitted from asender to a receiver over a communications channel. Using the errordetection bits (the redundancy) included in the coded data packet, eachreceived data packet is processed by the receiver to determine if thedata packet was received correctly or corrupted by errors. If the packetwas correctly received, the receiver transmits an acknowledgment (ACK)signal back to the sender. If the receiver detects errors in the packet,it may also send an explicit negative acknowledgment (NACK) to thesender. When the NACK is received, the sender can retransmit the packet.In a pure ARQ system, the channel code is only used for error detection.

In hybrid ARQ (HARQ), features of a pure FEC scheme and a pure ARQscheme are combined. Error correction and error detection functions areperformed along with ACK/NACK feedback signaling. The channel code in ahybrid ARQ scheme may be used for both error correction and errordetection. Alternatively, two separate codes can be used: one for errorcorrection and one for error detection. A NACK signal is sent back tothe transmitter if an error is detected after error correction. Theerroneously received data packet in this first type of hybrid ARQ systemis discarded. A more efficient hybrid ARQ scheme is to save theerroneously received and negatively acknowledged data packet and thencombine it in some way with the retransmission. Hybrid ARQ schemes thatuse packet combining are referred to as hybrid ARQ with combining. In ahybrid ARQ combining scheme, the “retransmission” may be an identicalcopy of the original packet. If the retransmission is identical to theoriginal transmission, the individual symbols from multiple packets arecombined to form a new packet consisting of more reliable symbols.Alternatively, the retransmission may use incremental redundancy (IR).In IR packet combining, additional parity bits are transmitted whichmakes the error correction code more powerful than, and generallysuperior to, identical packet combining.

Equally as important as reliable data delivery is fast data delivery. Todeliver data quickly, many data communications systems strive toincrease the available peak transmission rate and to reduce delay.Reducing delay is particularly important in order to support high datarates efficiently.

One example area where speed is important is in High Speed DownlinkPacket Access (HSDPA) channels to employed in some mobile radiocommunications networks. Currently, it is proposed the HSDPA channelsemploy a HARQ protocol as specified in the 3GPP Technical Specification(TS) 25.308 v0.1.0 “UTRA High Speed Downlink Packet Access,” released bythe 3GPP (3^(rd) Generation Partnership Project) in September 2001. Thespecified HARQ protocol retransmission scheme is implemented usingretransmission entities in an extension of the media access control(MAC) protocol layer in a base station (sometimes referred to as a “NodeB”) and a mobile user equipment (UE). The retransmission entity storeserroneously received data blocks, for example in the UE, and combinesthem with corresponding, later-received retransmissions of the same datablocks. Two (or more) erroneously received copies of a data block may becombined in the UE receiver into a correct data block. The MAC-HSDPAretransmission entity delivers correctly received data blocks to ahigher radio link control (RLC) protocol layer as RLC packet data units(PDUs).

The HARQ protocol defined in that specification includes a reorderingentity that achieves in-sequence delivery of received data units to thehigher RLC protocol layer. This function is necessary becausetransmitted data units numbered 0, 1, 2, 3, . . . experience varyingtransmission delays caused by the air-interface, and mainly as a resultof a different number of retransmissions needed for each data unit.Thus, if data unit 2 is correctly received before data unit 1, data unit2 is buffered until data unit 1 is correctly received before both dataunits 1 and 2 are provided to the upper protocol layer.

Unfortunately, the specified HARQ protocol and ARQ protocols in generalwill “stall” in certain situations. In the simple example just given, astall situation would occur when the reordering entity waits for a longtime (or it may even wait indefinitely) for data-unit 1 to be correctlyreceived. This may occur when a NACK message for data block has beencorrupted or is otherwise erroneously identified when received as anACK. As a result of this error, there will be no retransmission of thedata unit, even though it should be retransmitted. Another stallsituation occurs when the retransmission of a data unit is interruptedbecause the number of retransmissions exceeds a limit or because otherhigher priority data must be sent. The retransmission may be cancelledor resumed at a later time. In general, a stall occurs when a data unitis lost or will not be satisfactorily received in a foreseeable,reasonably short time.

It is an object of the present invention to avoid stall situations inorder to decrease data delays, and ultimately, increase data throughputrates.

It is an object of the present invention to provide a method and anapparatus for stall avoidance for an ARQ protocol that is relativelyeasy to implement.

In addition to stall problems, ARQ protocols also suffer from sequencenumber ambiguities if the data unit numbering scheme repeats in modulofashion, e.g., modulo-8 sequence numbering follows this kind ofrepeating pattern: 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1,2, 3, 4, 5, 6, 7, 0, 1, 2 . . . . Assume for example that a data unitwith sequence number (SN) 6 is sent at a first time interval as part ofa first set of data units numbered 0–7, but the SN 6 data unit is notsatisfactorily received at the receiver. A request for retransmission ofdata unit SN 6 is sent back to the transmitter. However, before thetransmitter retransmits data unit SN 6 from the first set, thetransmitter transmits another data unit SN 6 from a second set of dataunits numbered 0–7 for the first time. The receiver detects thejust-transmitted-for-the-first-time data unit SN 6, rather than theretransmitted data unit SN 6 as requested The receiver cannot detect orresolve this ambiguity, which results in errors.

It is an object of the present invention to provide a mechanism thatavoids such ambiguities either at the transmitter, the receiver, or atboth.

The present invention provides a stall avoidance mechanism that may beused alone or in conjunction with an ambiguity avoidance mechanism. Bothdecrease data delays and increase data throughput rates.

Stall avoidance is accomplished by determining whether a stall conditionexists with respect to receiving a missing data unit. The term “missingdata unit” includes a data unit that has not been received, a data unitthat is incorrectly received, or an incorrectly received data unit thatcannot be corrected. Alternatively, a missing data unit may be viewed asa data unit that the receiver requests the transmitter to retransmit forany reason.

In one non-limiting, example embodiment, a timer is started if a dataunit is received having a sequence number greater than the sequencenumber of the missing data unit. If the timer expires before the missingdata unit is received, thereby indicating that a stall condition exists,received data units having sequence numbers less than the sequencenumber of the missing data unit are removed from the receiver buffer andprovided to the higher protocol layer for further processing. On theother hand, if the missing data unit is received before the timerexpires, the timer is stopped and the received data units havingsequence numbers less than that of the missing data unit are removedfrom the buffer and sent to the higher protocol layer.

In ARQ transmission schemes where data units are transmitted in sequencemodulo-N, N being a larger sequence number, retransmission ambiguitiesmay be avoided using a retransmisson window in the transmitter and/or areceive window in the receiver. The size of the retransmission windowpreferably corresponds to a number of data units less than N, e.g., N/2.The retransmission window is positioned with respect to a retransmitbuffer to avoid ambiguity in the receiver when receiving data units withsequence numbers of originally-transmitted data units and retransmitteddata units. More specifically, retransmission of a data unit is onlypermitted when its sequence number is within a current position of thetransmission window in the sequence numbering. An upper end of thewindow is positioned in the retransmit buffer at a sequence number thatis less than or equal to a difference between the highest sequencenumber most recently transmitted and the window size. The transmissionwindow is moved to a next sequence number position in the modulo-Nsequence after each data unit is transmitted.

The receiver may also use a receiving window as another way to avoidambiguity between orignally-transmitted and retransmitted data units.The size of the receiving window preferably corresponds to a number ofdata units less than N, e.g., N/2. An upper end of the receiving windowis positioned at a data unit sequence number less than or equal to adifference between a highest sequence number most recently received andthe window size. A received data unit having a received sequence numberwithin a current position of the receiving window is stored at alocation in the buffer corresponding to its sequence number. However, ifa received data unit inside the window was previously received, it isdiscarded. If it is outside the receiving window, the data unit is alsostored in the buffer at its corresponding sequence number position, andthe receiver window is advanced so that the sequence number of that dataunit forms the upper end of the window. After moving the receive window,data units having a sequence number less than that the lower end of thewindow are removed from the buffer.

Although each mechanism may be used independently of the other, apreferred example embodiment uses a stall avoidance timer, aretransmission window in the transmitter, and a receive window in thereceiver.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, features, and advantages of the presentinvention may be more readily understood with reference to the followingdescription taken in conjunction with the accompanying drawings. For abetter understanding, reference is made to the following drawings andpreferred embodiments of the invention.

FIG. 1 illustrates a communications system between a transmitter and areceiver employing an ARQ type protocol;

FIG. 2 illustrates an example of a reordering buffer employed in areceiver used to deliver received data units in sequence to higherprotocol layers;

FIG. 3 is a function block diagram illustrating a transmitter and areceiver in accordance with one example embodiment of the presentinvention;

FIG. 4 illustrates a Timer routine outlining procedures in accordancewith one example embodiment of a stall avoidance mechanism;

FIGS. 5A and 5B illustrate an example of an ambiguity of received unitsat the receiver when a sequence number repeating ARQ protocol is used;

FIG. 6 illustrates a Transmit Window routine in accordance with oneexample embodiment of an ambiguity prevention mechanism;

FIG. 7 illustrates a Receive Window routine in accordance with anotherexample embodiment of an ambiguity prevention mechanism;

FIGS. 8A and 8B illustrate the ambiguity prevention mechanisms inaccordance with FIGS. 6 and 7 in a simple example;

FIG. 9 illustrates an example communication system in which the presentinvention may be employed;

FIG. 10 illustrates a hybrid ARQ transmitter that may be employed in theexample system shown in FIG. 9; and

FIG. 11 is a function block diagram of a hybrid ARQ receiver that may beused in the example communication system shown in FIG. 9.

DETAILED DESCRIPTION

In the following description, for purposes of explanation and notlimitation, specific details are set forth, such as particularembodiments, procedures, techniques, etc. in order to provide a thoroughunderstanding of the present invention. However, it will be apparent toone skilled in the art that the present invention may be practiced inother embodiments that depart from these specific details. In someinstances, detailed descriptions of well-known methods, interfaces,devices, and signaling techniques are omitted so as not to obscure thedescription of the present invention with unnecessary detail. Moreover,individual function blocks are shown in some of the figures. Thoseskilled in the art will appreciate that the functions may be implementedusing individual hardware circuits, using software functioning inconjunction with a suitably programmed digital microprocessor or generalpurpose computer, using an application specific integrated circuit(ASIC), and/or using one or more digital signal processors (DSPs).

FIG. 1 illustrates a simple communication system 10 in which atransmitter 12 transmits data units to a receiver 14. Each of the dataunits has a corresponding sequence number, and the transmitter 12 sendsthem over a communications channel in sequence. Because of variousfactors, some of the data units may not be received or receivedaccurately by the receiver 14. As a result, the receiver sends anacknowledgement to the transmitter (ACK) for each correctly receiveddata unit. For a data unit determined to be missing, in error, oruncorrectable, a retransmission request is sent for the transmitter toresend the data unit identified by its sequence number. A retransmissionrequest may be sent in the form of a negative acknowledgement (NACK).

As described in the background, there are situations in which atransmitted data unit is not received or improperly received and, forwhatever reason, need to be retransmitted. Hereafter, such a data unitis generally referred to as a missing data unit as defined above. FIG. 2illustrates an example reordering buffer in the receiver 14. Data units0, 1, 2, 4, 6, and 7 have been correctly received and are stored incorresponding locations a reordering buffer for subsequent in-sequencedelivery to a higher protocol layer. Consecutive data units 0, 1, and 2are delivered to the higher protocol layer. Delivery of data units 4, 6,and 7 to the higher layer is prevented because intervening data units 3and 5 are missing. If a missing data unit is permanently lost or willnot be received in a foreseeable time, a stall condition exists. Thepresent invention avoids the stall avoidance using a stall avoidancetimer.

FIG. 3 shows the transmitter 12 and the receiver 14 shown in additionaldetail and including, among other things, a stall avoidance timer 30.Transmitter 12 includes a controller 16 coupled to a transmit buffer 18,a retransmitter buffer 20, and a transmitter window 21. The transmitbuffer 18 stores data units from higher protocol layers to be initiallytransmitted via a communications channel to the receiver 14. When thedata units are transmitted, they are also stored in the retransmitbuffer 20 until an acknowledgement or a request to retransmit request isreceived from the receiver 14. The transmitter window 21 is describedbelow in conjunction with ambiguity avoidance.

The receiver 14 includes a controller 22 coupled to a reordering buffer24, an error detector 26, a receiver window 28, a stall avoidance timer30, and higher protocol layers 32. The reordering buffer 24 storescorrectly received data units by sequence number. An example of areordering buffer is shown in FIG. 2. Error detector 26 detects errorsin received data units and may also include functionality to correctcertain types of errors. Only correct (or corrected) data units arestored in the reordering buffer 26. The controller sends anacknowledgement (ACK) for correctly received data units, and a requestto retransmit for missing data units. The receiver window 28 isdescribed below in the context of ambiguity prevention. The stallavoidance timer 30 avoids stall situations where a missing PDU preventsdelivery of correctly received PDUs to higher protocol layers after acertain period of time.

In this regard, reference is made to the Timer procedures (block 40)shown in flowchart form in FIG. 4. From the data units stored in thereordering buffer 24 in the receiver, the controller 22 detects amissing data unit with a lowest sequence number (SN) referred to as “themissing SN” (block 42). In block 44, a check is made for a stallcondition. If a data unit with a sequence number equal to X, which isgreater than the missing sequence number is received, a timer is started(assuming the timer is stopped or otherwise expired) for the data unitX. The timer unit is set to time out at a preset time. The preset timecan be any time but is typically a trade-off between an acceptable dataunit delay and an acceptable data unit loss. Because these trade-offparameters are often a function of quality of service requirements, thetimer value may be set when quality of service requirements are known.

A decision is made in block 46 whether the missing data unit has beenreceived. If so, the stall condition timer is stopped. The data unit X,along with any received data units stored in the reordering bufferhaving sequence numbers up to X, are removed from the buffer and sent upto a higher protocol layer (block 48), and the process repeats at block42. If the missing data unit has not yet been received, a decision ismade in block 50 whether the timer has expired. If not, control returnsto block 46. If the stall condition timer has expired, all data unitsare removed from the reordering buffer up to data unit X and sent to thehigher layer (block 52), and the process repeats at block 42.

Thus, the timer-based mechanism in accordance with the preferred exampleembodiment prevents stalls from occurring in ARQ protocols when amissing data unit will not be received within a reasonable time frame.When a missing data unit is not received in the timeout period, it isassumed to be permanently missing, and correctly received data units aredelivered without further delay. Because this stall condition avoidancemechanism only requires a single timer, it is easily implemented andcontrolled. However, other stall condition avoidance mechanisms may beused.

Even if stall conditions are avoided with respect to missing data units,there still is the problem of ambiguity between transmitted data unitsand retransmitted data units having the same sequence number. FIGS. 5Aand 5B show an example of this ambiguity problem. In this example, thedata unit sequence numbering scheme goes from 0 to 7 and thenrepeats—modulo-8. In FIG. 5A, the transmitter transmits a first set ofeight data units having sequence numbers 0–7 by time T0. By time T1, thetransmitter has transmitted a second set of eight data units also havingsequence numbers 0–7. In FIG. 5B, the receiver has only received dataunits 1, 2, 3, and 5 at time T0 and is missing data units 0, 4, 6, and7. Accordingly, the receiver sends a request to retransmit data units 0,4, 6, and 7 to the transmitter which is not received and processed inthe transmitter until time T1. After time T1, the receiver may receiveboth retransmitted units 0, 4, 6, or 7 from the first data unit set andoriginally-transmitted data units 0, 1, 2, 3, and 4 from the second set.This example uses the stall condition avoidance mechanism, so that bytime T1, data unit 0 is deemed permanently missing and removed.Correctly received data units 1, 2, and 3 are also removed and deliveredto the next higher protocol layer. But an ambiguity remains. How doesthe receiver know whether a received data unit 4 is the data unit 4 fromthe first set or the second set? The receiver does not know where to putthe just-received data unit 4 in the reordering buffer. The ambiguity iseven more problematic if the stall condition avoidance is not usedbecause if the just received data unit has a SN=0, the receiver will notknow whether it is retransmitted (from the second set) ororiginally-transmitted (from the second set).

A fit ambiguity prevention mechanism implemented at the transmitter isdescribed in conjunction with Retransmit Window procedures (block 60)shown in flowchart form in FIG. 6. Here, the transmitter employs aretransmit window to specify a set of data units that may beretransmitted during certain time frames. By only retransmitting dataunits within the retransmit window, sequence number ambiguities at thereceiver between transmitted and retransmitted data units are avoided.

Initially, the size of the retransmit window is set at the transmitter(block 62). Assuming that the sequence numbering repeats modulo-N, thewindow size is less than N. In a preferred example, the window sizeequals N/2. For illustration, assume N=8. The retransmit window sizethen corresponds to four data units. The window is positioned in thedata unit sequence of the retransmit buffer as follows: [SN-window],where SN is the most recently transmitted sequence number. After thetransmission of each data unit, the window location is incremented byone sequence number following the modulo-N sequence.

At time=T0, the transmitter transmits a data unit with a highestsequence number equal to 4 (block 64). The retransmit window is thuspositioned so that it permits retransmission data units only betweensequence numbers 1–4. At time T1, the transmitter transmits a data unitwith a highest sequence number 5. Accordingly, the retransmit window isshifted so that it only permits retransmission of data units betweensequence numbers 2–5 (block 66). For example, the transmitter cannotretransmit data units 0 or 1. At time=T2, the retransmit window slidesto SN=6 and permits retransmission of data units only between sequencenumbers 3–6 (block 66).

Another mechanism for avoiding ambiguities betweenoriginally-transmitted and retransmitted data units is to employ areceive window at the receiver. In this regard, reference is made to theReceive Window procedures (block 80) illustrated in flowchart form inFIG. 7. A receive (Rx) window size is determined (block 82). As with theretransmit window, it is preferred that the receive window be less thanthe highest sequence number N of a modulo-N numbering sequence. Forexample, the receive window is preferably N/2. When the receiverreceives a data unit, it detects its sequence number, represented hereby the variable X (block 84). A decision is made in block 86 whethersequence number X is inside the receive window. If it is, adetermination is made whether that data unit X was previously received(block 90). If so, the data unit is discarded (block 92). If not, dataunit X is placed in the reordering buffer at a position corresponding tosequence number X (block 94).

On the other hand, if the data unit with sequence number X is outsidethe receive window, it is stored in the reordering buffer above thehighest received sequence number at a position corresponding to sequencenumber X (block 88). The receiver window is then advanced so that theupper edge of the receiver window is at sequence number X (block 96).Data units are then removed from the reordering buffer having a sequencenumber less than or equal to sequence number X minus the window size(block 98). After blocks 94 and 98, any received data units in thereordering buffer with consecutive sequence numbers up to the lowestsequence number of a data unit not yet received are removed from thereordering buffer and delivered to a higher protocol layer (block 100).

The retransmit window avoids ambiguity in the receiver by controllingwhich sequence number data units may be transmitted. Although thereceive window does not restrict which data units can be received, itavoids ambiguity in the receiver by removing data units from thereordering buffer that are no longer inside the receive window andplacing a received data unit in its proper location in the reorderingbuffer.

FIG. 8A illustrates an example of the retransmit window relative to theretransmit buffer at two different times T0 and T1. At time T0, theretransmit window having a size in this example of 4, is positioned toencompass transmitted data blocks 0, 1, 2, and 3. Any request toretransmit data units at time 0 will only be honored if it identifies adata unit with a sequence number of 0, 1, 2, or 3. A request forretransmission of a data unit 4, 5, 6, or 7 in this example would not behonored. However, at time T1 the window has been moved to encompass dataunits 2, 3, 4, and 5. At this point, a request to retransmit data units0, 1, 6, or 7 would not be honored.

FIG. 8B illustrates an example of a receiver window relative to thereordering buffer. At time T0, the window is positioned over data units0, 1, 2, and 3. Data units 1, 2, and 3 have been received, but data unit0 has not yet been received. At time T1, data units 0 and 1 are belowthe window and are removed from the buffer. The Rx now windowencompasses data units 2, 3, 4, and 5, but only data unit 5 has beenreceived. Data units 6 and 7, although transmitted, have not yet beenreceived. Any received data block greater than data unit 1 is placed bythe receiver in the correct position in the reordering buffer.

Although the present invention may be employed in any communicationsbetween a transmitter and receiver that employs an ARQ type protocol, anon-limiting example application to a Universal MobileTelecommunications System (UMTS) such as that shown at reference numeral100 in FIG. 9 is now described. A representative, circuit-switched corenetwork, shown as cloud 120, may be, for example, the Public-SwitchedTelephone Network (PSTN) or the Integrated Services Digital Network(ISDN). A representative, packet-switched core network, shown as cloud140, may be, for example, an IP network like the Internet. Both corenetworks are coupled to corresponding core network service nodes 160.The PSTN-ISDN circuit-switched network 120 is connected to acircuit-switched service node shown as a mobile switching center (MSC)180 that provides circuit-switched services. The packet-switched network140 is connected to a General Packet Radio Service (GPRS) node 200tailored to provide packet-switched type services. Each of the corenetwork service nodes 180 and 200 connects to a UMTS Terrestrial RadioAccess Network (UTRAN) 240 that includes one or more radio networkcontrollers (RNCs) 260. Each RNC is connected to a plurality of basestations (BSs) 280 and to other RNCs in the UTAN 220. Radiocommunications between one or more base stations in a mobile terminal(MT) 300, one type of wireless user equipment (UE), are by way of aradio interface.

The radio access in this non-limiting example is based on Wideband-CDMA,(WCDMA) with individual radio channels distinguished using spreadingcodes. Wideband CDMA provides wide radio bandwidth for multimediaservices including packet data applications that have high datarate/bandwidth requirements. One scenario in which high speed data mayneed to be transmitted downlink to the UTRAN over the radio interface toa mobile terminal is when the mobile terminal requests information froma computer attached to the Internet, e.g., a website. In this examplesituation the base station is the transmitter, the UE mobile terminal isthe receiver, and a High Speed Downlink Packet Access (HSDPA) channelmay be employed.

FIGS. 10 and 11, respectively, show in function block format a hybridARQ (HARQ) transmitter 310 and a hybrid ARQ receiver 500 that maybe usedto implement the present invention in the system shown in FIG. 9. TheHSDPA channel may employ a HARQ protocol as specified in the 3GPPTechnical Specification (TS) 25.308 v0.1.0 “UTRA High Speed DownlinkPacket Access,” released by the 3GPP (3^(rd) Generation PartnershipProject) in September 2001.

The hybrid ARQ transmitter 310 in FIG. 10 includes the channel encoder320, which performs channel encoding functions including coding originaldata from higher protocol layers with forward error correction and errordetection bits. Data units including media access control (MAC) protocoldata units (PDUs) are provided to a transmit buffer 340 as well as to aretransmit buffer 360. The controller 420 controls the operation of thechannel encoder 320, the buffers 340 and 360, and the transmitter frontend 400. Initially, PDUs stored in the transmit buffer 340 are sent viathe transmitter front end as the transmitted signal. Depending upon thereceived feedback provided by the ACK/RETX receiver 440, the controller420 using the retransmission window 340, controls selectiveretransmission of PDUs out of the retransmit buffer 360 via thetransmitter front end 400.

The hybrid ARQ receiver 500 in FIG. 11 includes a receiver front end 520which receives the signal transmitted over the communications channelfrom the transmitter. The received signal information is stored in acombiner buffer 540 and is also provided to a combiner 560. The outputof the combiner 560 is processed in a forward error correction (FEC)decoder 580. The decoded output is processed in error detection block600 to detect errors in the decoded output. If no errors are detected,the PDUs are stored in a reordering buffer 610. If errors are detectedin the decoder output, the controller 620 may transmit a request forretransmission (ReTx) via ACK/ReTx transmitter 640. The controller 620determines when a packet has not been received using sequence numberinginformation of received packets and the reordering buffer 610. Thissequence number information is also used by the combiner 560 to performincremental redundancy combining. Moreover, if the controller 620receives a signal from error detection blocks 600 indicating that thereare too many errors output by the FEC decoder 580, making errorcorrection either too difficult or improbable, the controller 620 sendsrequests to retransmit.

The controller 620 includes a stall timer 625 and a receiving window630. The stall timer 625 as described above is used to detect and breaka stall condition and send PDUs in the reordering buffer 620 up to ahigher processing layer whenever the stall timer expires. Moreover, thereceiving window 630 is used by the controller 620 to avoid ambiguitieswith PDUs that are originally transmitted and those that areretransmitted.

The user equipment (UE) provides in-sequence delivery to higher layersby storing the correctly received data blocks in reordering buffers.Logically, one buffer per priority class is needed to providein-sequence delivery per priority class. PDUs up to a first missingsequence number are delivered to higher layers in-sequence. When a datablock is missing, all received data blocks with a higher SN are kept inthe reordering buffer, e.g., see FIG. 1.

While the present invention has been described with respect toparticular embodiments, those skilled in the art will recognize that thepresent invention is not limited to these specific exemplaryembodiments. While it is preferable to use the stall avoidance timer,the retransmit window, and receive window together to avoid stalls andambiguities, it is not necessary. Any one or two may be used toadvantage. Different formats, embodiments, and adaptations besides thoseshown and described as well as many variations, modifications, andequivalent arrangements may also be used to implement the invention.Therefore, while the present invention has been described in relation toits preferred embodiments, it is to be understood that this disclosureis only illustrative and exemplary of the present invention.Accordingly, it is intended that the invention be limited only of thescope of the claims appended hereto.

1. A method for use in data unit transmissions between a transmitter and a receiver implemented in the receiver, comprising: detecting a sequence number of data units received by the receiver; storing the received data units in a buffer; identifying a missing data unit in the sequence; starting a timer if a data unit is received having a sequence number greater than a sequence number of the missing data unit; if the timer expires before the missing data unit is received, removing from the buffer the received data units having sequence numbers less than the sequence number of the missing data unit; receiving the missing data unit before the timer expires; stopping the timer; and removing the received data units having a sequence number less than the sequence number of the missing data unit, the received missing data unit and the received data units each having a sequence number less than the sequence number of the received missing data unit are sent to a higher protocol layer for further processing.
 2. The method in claim 1, wherein a missing data unit includes a data unit that has not been received, a data unit that is incorrectly received, or a received data unit that can not be corrected.
 3. The method in claim 1, wherein a missing data unit includes a data unit that the receiver requests the transmitter to retransmit.
 4. The method in claim 1, wherein the received data units having sequence numbers less than the sequence number of the missing data unit are sent to a higher protocol layer for further processing.
 5. The method in claim 1, further comprising: using a retransmission window at the transmitter to avoid sequence number ambiguity in the receiver between originally-transmitted data units and retransmitted data units.
 6. The method in claim 1, further comprising: using a receiving window at the receiver to avoid sequence number ambiguity in the receiver between originally-transmitted data units and retransmitted data units.
 7. A method for use in data unit transmissions between a transmitter and a receiver implemented in the transmitter, where each data unit includes a corresponding sequence number, comprising: transmitting data units in sequence modulo-N, N being a largest sequence number; establishing a retransmission window having a size corresponding to a number of data units less than N; and using the retransmission window to avoid sequence number ambiguity in the receiver between originally-transmitted data units and retransmitted data units, wherein an upper end of the window is positioned at a sequence number that is less than or equal to a difference between a highest sequence number most recently transmitted and the window size, the method further comprising: moving the retransmission window to a next sequence number position in the modulo-N sequence after each data unit is transmitted.
 8. The method in claim 7, further comprising: only permitting retransmission of one or more data units having a sequence number within a current position of the retransmission window in the sequence.
 9. The method in claim 7, wherein the size of the retransmission window is N/2.
 10. The method in claim 7, wherein a missing data unit includes a data unit that has not been received, a data unit that is incorrectly received, or a received data unit that can not be corrected.
 11. The method in claim 7, wherein a missing data unit includes a data unit that the receiver requests the transmitter to retransmit.
 12. The method in claim 7, further comprising: identifying a missing data unit in the sequence; starting a timer if a data unit is received having a sequence number greater than a sequence number of the missing data unit; and if the timer expires before the missing data unit is received, removing from the buffer the received data units having sequence numbers less than the sequence number of the missing data unit.
 13. The method in claim 7, further comprising: using a receiving window at the receiver to avoid sequence number ambiguity in the receiver between originally-transmitted data units and retransmitted data units.
 14. A method for use in data unit transmissions between a transmitter and a receiver implemented in the receiver, where each data unit includes a corresponding sequence number and is transmitted by the transmitter in sequence modulo-N, N being a largest sequence number, comprising: a receiving window corresponding to a number of data units less than N, using the receiving window to avoid sequence number ambiguity in the receiver between originally-transmitted data units and retransmitted data units, if a recently-received data unit is outside the receiving window, then storing the recently-received data unit in the buffer at a position corresponding to the recently-received data unit sequence number, and advancing the receiver window so that the sequence number of the recently-received data unit forms the upper end.
 15. The method in claim 14, further comprising: storing in a buffer a received data unit having a sequence number within a current position of the receiving window in the sequence, where an end of the receiving window is positioned at a sequence number that is less than or equal to a difference between a highest sequence number most recently transmitted and the window size, wherein the received data unit is stored at location in the buffer corresponding to the sequence number of the received data unit.
 16. The method in claim 15, further comprising: removing from the buffer all received data units with consecutive sequence numbers up to a first missing data unit.
 17. The method in claim 16, wherein the removed data units are provided to a higher protocol layer.
 18. The method in claim 14, further comprising: determining whether a recently-received data unit inside the receiving window was previously received, and if so, discarding the recently-received data unit.
 19. The method in claim 14, wherein if a recently-received data unit inside the receiving window was not previously received, storing the recently-received data unit in the buffer in a position corresponding to the recently-received data unit sequence number.
 20. The method in claim 14, further comprising: removing from the buffer any data units having a sequence number less than the lower end of the receiver window.
 21. The method in claim 14, wherein the size of the receiver window is N/2.
 22. The method in claim 14, wherein a missing data unit includes a data unit that has not been received, a data unit that is incorrectly received, or a received data unit that can not be corrected.
 23. The method in claim 14, wherein a missing data unit includes a data unit that the receiver requests the transmitter to retransmit.
 24. The method in claim 14, further comprising: identifying a missing data unit in the sequence; starting a timer if a data unit is received having a sequence number greater than a sequence number of the missing data unit; and if the timer expires before the missing data unit is received, removing from the buffer the received data units having sequence numbers less than the sequence number of the missing data unit.
 25. The method in claim 24, further comprising: using a retransmission window at the transmitter to avoid sequence number ambiguity in the receiver between originally-transmitted data units and retransmitted data units.
 26. A receiver for receiving data units transmitted from a transmitter, comprising: a detector for detecting a sequence number of data units received by the receiver; a buffer for storing the received data units in a buffer; a timer; and electronic circuitry configured to: identify a missing data unit in the sequence; start the timer if a data unit is received having a sequence number greater than a sequence number of the missing data unit; and if the timer expires before the missing data unit is received, remove from the buffer the received data units having sequence numbers less than the sequence number of the missing data unit if the missing data unit is received before the timer expires, stop the timer, remove the received data units each having a sequence number less than the sequence number of the missing data unit, and send the received missing data unit and the received data units each having a sequence number less than the sequence number of the received missing data unit to a higher protocol layer for further processing.
 27. The receiver in claim 26, wherein a missing data unit includes a data unit that has not been received, a data unit that is incorrectly received, or a received data unit that can not be corrected.
 28. The receiver in claim 26, wherein a missing data unit includes a data unit that the receiver requests the transmitter to retransmit.
 29. The receiver in claim 26, wherein the electronic circuitry is configured to send received data units having sequence numbers less than the sequence number of the missing data unit to a higher protocol layer for further processing.
 30. The receiver in claim 26, wherein the electronic circuitry is configured to use a receiving window to avoid sequence number ambiguity between originally-transmitted data units and retransmitted data units.
 31. A transmitter for use in transmitting data units to a receiver, where each data unit includes a corresponding sequence number, comprising: a transmitter for transmitting data units in sequence modulo-N, N being a largest sequence number; a retransmission window having a size corresponding to a number of data units less than N; and a controller configured to use the retransmission window to avoid sequence number ambiguity in the receiver between originally-transmitted data units and retransmitted data units, the controller is configured to position an upper end of the window at a sequence number that is less than or equal to a difference between a highest sequence number most recently transmitted and the window size.
 32. The transmitter in claim 31, wherein the controller is configured to only permit retransmission of one or more data units having a sequence number within a current position of the retransmission window in the sequence.
 33. The transmitter in claim 31, wherein the controller is configured to move the retransmission window to a next sequence number position in the modulo-N sequence after each data unit is transmitted.
 34. The transmitter in claim 31, wherein the size of the retransmission window is N/2.
 35. A receiver for use in data unit transmissions between a transmitter and the receiver, where each data unit includes a corresponding sequence number and is transmitted by the transmitter in sequence modulo-N, N being a largest sequence number, comprising: a receiving window corresponding to a number of data units less than N, a controller configured to use the receiving window to avoid sequence number ambiguity in the receiver between originally-transmitted data units and retransmitted data units, and a buffer, if a recently-received data unit is outside the receiving window, the controller is configured to store the recently-received data unit in the buffer at a position corresponding to the recently-received data unit sequence number and advance the receiver window so that the sequence number of the recently-received data unit forms the upper end.
 36. The receiver in claim 35, further comprising: wherein the controller is configured to store in the buffer a received data unit having a sequence number within a current position of the receiving window in the sequence, where an end of the receiving window is positioned at a sequence number that is less than or equal to a difference between a highest sequence number most recently transmitted and the window size, wherein the received data unit is stored at location in the buffer corresponding to the sequence number of the received data unit.
 37. The receiver in claim 35, wherein the controller is configured to determine whether a recently-received data unit inside the receiving window was previously received, and if so, discard the recently-received data unit.
 38. The receiver in claim 35, wherein if a recently-received data unit inside the receiving window was not previously received, the controller is configured to store the recently-received data unit in the buffer in a position corresponding to the recently-received data unit sequence number.
 39. The receiver in claim 35, wherein the controller is configured to remove from the buffer any data units having a sequence number less than the lower end of the receiver window.
 40. The receiver in claim 35, wherein the controller is configured to remove from the buffer all received data units with consecutive sequence numbers up to a first missing data unit.
 41. The receiver in claim 35, wherein the size of the receiver window is N/2.
 42. The receiver in claim 35, further comprising: a timer, wherein the controller is configured to: identify a missing data unit in the sequence; start the timer if a data unit is received having a sequence number greater than a sequence number of the missing data unit; and if the timer expires before the missing data unit is received, remove from the buffer the received data units having sequence numbers less than the sequence number of the missing data unit. 